/*********************************************************************************************************
 *
 *	模块名称 :用户输入内容解析模块
 *	文件名称 :Analysis_Usr_Command.c
 *	版    本 : V1.0
 *	说    明 :本模块用于分析并识别用户输入内容，并跳转至对应命令函数。
 *
 *              注意事项：
 *                务必将编辑器的缩进参数和TAB设置为4来阅读本文件，以使得代码显示整齐。
 *
 *	修改记录 :
 *		版本号       日期         作者        说明
 *		V1.0     2022-05-09     zrx
 *
 *	Copyright (C), 2022-2030, xxxx
 *
 *********************************************************************************************************/

#include "../include/Analysis_Usr_Command.h"

/*********************************************************************************************************
 *	函 数 名:Analysis_Usr_Command
 *	功能说明:分析并识别用户输入内容，并跳转至对应命令函数。
 *	形    参:string User content   string pointer array User content
 *  全局变量:无
 *	返 回 值:success 0    false -1
 *********************************************************************************************************/
int Analysis_Usr_Command(char *buf, char *abuf[20])
{
    abuf[0] = strtok(buf, " "); //分割用户内容

    int i;
    for (i = 0; abuf[i];)
    {
        if (i > 19)
        {
            printf("cd suff too many\n");
            for (i = 0; i < 20; i++)
            {
                abuf[i] = NULL;
            }
            return -1;
        }
        abuf[++i] = strtok(NULL, " ");
    }
    if (abuf[0]) //识别命令内容
    {
        if (!strcmp(abuf[0], "ls"))
        {
            Ls_Command(abuf);
        }
        else if (!strcmp(abuf[0], "cp"))
        {
            Cp_Command(abuf);
        }
        else if (!strcmp(abuf[0], "touch"))
        {
            Touch_Command(abuf);
        }
        else if (!strcmp(abuf[0], "cat"))
        {
            Cat_Command(abuf);
        }
        else if (!strcmp(abuf[0], "mv"))
        {
            Mv_Command(abuf);
        }
        else if (!strcmp(abuf[0], "mkdir"))
        {
            Mkdir_Command(abuf);
        }
        else if (!strcmp(abuf[0], "pwd"))
        {
            Pwd_Command();
        }
        else if (!strcmp(abuf[0], "cd"))
        {
            Cd_Command(abuf);
        }
        else if (!strcmp(abuf[0], "ln"))
        {
            Ln_Command(abuf);
        }
        else if (!strcmp(abuf[0], "rm"))
        {
            Rm_Command(abuf);
        }
        else if (!strcmp(abuf[0], "quit"))
        {
            Quit_Command();
        }
        else
        {
            printf("%s :no command\n", abuf[0]);
        }

        return 0;
    }
    else
    {
        return 0;
    }
}